JVM的class file包含一个单独的class结构体,定义如下:

// u4 代表长四个字节
ClassFile {
    u4             magic;  //0xCAFEBABE
    u2             minor_version;  //小版本
    u2             major_version;  //大版本
    u2             constant_pool_count; //常量池大小(特别注意常量池索引从1开始计数),如此值为22,则常量池有21项
    cp_info        constant_pool[constant_pool_count-1]; 
    u2             access_flags;  //类是private还是public
    u2             this_class;  //指向常量池中本类名(一个字符串)的索引
    u2             super_class; //指向常量池中父类名(一个字符串)的索引
    u2             interfaces_count;  //接口数,表示该类实现了多少个接口
    u2             interfaces[interfaces_count];
    u2             fields_count;  //field(成员变量)数
    field_info     fields[fields_count];
    u2             methods_count; //方法数
    method_info    methods[methods_count];
    u2             attributes_count;  //属性数
    attribute_info attributes[attributes_count];
}